#include"BlockQueue.hpp"
#include<time.h>
#include<unistd.h>
using namespace blockqueue;

void* producter(void* args)
{
    BlockQueue<int>* bq=(BlockQueue<int>*) args;
    while(true)
    {
        int data=rand()%10+1;
        bq->push(data);
        std::cout<<"生产者生产数据 "<<data<<std::endl;
    }
}

void* consumer(void* args)
{
      BlockQueue<int>* bq=(BlockQueue<int>*) args;
      while(true)
      {
        sleep(2);
        int data=0;
        bq->pop(&data);
        std::cout<<"消费者消费了一个数据 "<<data<<std::endl;
      }

}


int main()
{
    srand((long long)time(nullptr));
    pthread_t c;
    pthread_t p;
    BlockQueue<int>* bq=new BlockQueue<int>();
    pthread_create(&c,nullptr,consumer,(void*)bq);
    pthread_create(&p,nullptr,producter,(void*)bq);

    pthread_join(c,nullptr);
    pthread_join(p,nullptr);

    return 0;

}